#pragma once

namespace MCCommon
{

class XMLElement;

class IXmlable
{
public:
    /**
     * Destructor.
     * 
     */
    virtual ~IXmlable()
    {
    }

    /**
     * Write to XML element.
     * 
     */
    virtual void WriteToXMLElement
    (
        XMLElement& elem
    ) const = 0;

    /**
     * Read from XML element.
     * 
     */
    virtual bool ReadFromXMLElement
    (
        XMLElement& elem
    ) = 0;
 };

}// end of namespace MCCommon